﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sausage.Web.Models;
using System.Web.Script.Serialization;
using Sausage.Web.DataModel;
using Sausage.Web.Domain;
using Microsoft.Reporting.WebForms;

namespace Sausage.Web.Report
{
    /// <summary>
    /// 养护汇总表。
    /// </summary>
    /// <remarks></remarks>
    /// <history>
    /// [zanezeng]               2012/04/01 12:21    创建
    /// </history>
    public partial class MaintainSummaryReport : System.Web.UI.Page
    {
        /// <summary>
        /// 处理页面加载事件。
        /// </summary>
        /// <param name="sender">事件源。</param>
        /// <param name="e">包含事件参数的<see cref="System.EventArgs"/>对象。</param>
        /// <remarks></remarks>
        /// <history>
        /// [zanezeng]               2012/04/01 12:21    创建
        /// </history>
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// 处理页面初始化事件。
        /// </summary>
        /// <param name="e">包含事件参数的<see cref="System.EventArgs"/>对象。</param>
        /// <remarks></remarks>
        /// <history>
        /// [zanezeng]               2012/07/25 16:12    创建
        /// </history>
        protected override void OnInit(System.EventArgs e)
        {
            //用于保存过滤条件
            MaintainSummaryCondition conditon = null;

            //创建序列化器
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            //获得过滤条件
            string filter = HttpContext.Current.Request.Params["Filter"];

            //判断是否指定了过滤条件
            if (!string.IsNullOrEmpty(filter))
            {
                //反序列化过滤条件
                conditon = serializer.Deserialize<MaintainSummaryCondition>(filter);
            }

            //判断是否指定了过滤条件
            if (null == conditon)
            {
                //生成过滤条件
                conditon = new MaintainSummaryCondition();
            }

            //判断是否设置了日期
            if (!conditon.ApplicationDate_L.HasValue)
            {
                conditon.ApplicationDate_L = DateTime.Now;
            }

            //判断是否设置了日期
            if (!conditon.ApplicationDate_H.HasValue)
            {
                conditon.ApplicationDate_H = DateTime.Now;
            }
            else
            {
                conditon.ApplicationDate_H = conditon.ApplicationDate_H.Value.AddDays(1);
            }

            //判断是否指定了单位
            if (conditon.Organizations == null || conditon.Organizations.Length == 0)
            {
                //查询所有的养护单位
                conditon.Organizations = OrganizationHelper.GetAllowedOrganization().Select(item => item.OrganizationID).ToArray();
            }

            //判断是否指定了数据类型
            if (conditon.DataTypes == null || conditon.DataTypes.Length == 0)
            {
                //设置数据类型
                conditon.DataTypes = new int[] { 0, 1, 2, 3, 4 };
            }

            //添加过滤条件
            this.Context.Items.Add("Filter", conditon);

            //创建参数
            ReportParameter parameter = new ReportParameter("DateRange", string.Format("{0:yyyy年MM月dd日} ─ {1:yyyy年MM月dd日}", conditon.ApplicationDate_L.Value, conditon.ApplicationDate_H.Value), false);

            //设置参数值
            this.Report.LocalReport.SetParameters(parameter);

            //调用基类初始化
            base.OnInit(e);
        }
    }
}